3.2 板载温度传感器

一、学习目标

1. 学习树莓派Pico主板的引脚ADC引脚基本使用。

2. 了解如何通过读取板载温度传感器的温度。

二、硬件使用

本次课程无需额外的硬件,直接利用树莓派Pico主板上的温度传感器。

image-20220209094626831

Raspberry Pi Pico的RP2040微控制器和Raspberry Pi Pico 2的RP2350微控制器是一种数字设备,就像所有主流微控制器一样:它由数千个晶体管组成,这些微小的开关式设备要么打开,要么关闭。 因此,你的PICO无法真正理解一个模拟信号-它可以是完全关闭和完全打开之间的频谱上的任何东西-而不依赖额外的硬件:模拟数字转换器(ADC)。

一个ADC有两个关键的特点:它的分辨率,以数字位测量,它的通道,或它可以接受和转换多少模拟信号一次。 您的PICO中的ADC的分辨率为12位,这意味着它可以将模拟信号转换为数字信号,其数字从0到4095不等-尽管这是在MicroPython中处理的,转换为从0到65,535的16位数字,因此它的行为与其他MicroPython微控制器上的ADC相同。 它有三个通道被带到GPIO引脚:GP26、GP27和GP28,它们也被称为模拟通道0、1和2的GP26_ADC0、GP27_ADC1和GP28_ADC2。 还有第四个ADC通道,它连接到一个内置在RP2040中的温度传感器。

三、程序分析

完整程序位置:Pico Robot配套资料 -> 附件 -> 课程程序源码 -> 1.基础课程 -> 2.板载温度传感器.py

import machine

机器库包含MicroPython需要与Pico和其他MicroPython兼容的设备通信的所有指令,扩展了物理计算的语言。

import time

“time”库。 这个库处理所有与时间有关的事情,从测量它到将延迟插入到程序中。单位为秒。

sensor_temp = machine.ADC(29)

初始化一个ADC(模数转换器)对象,该对象将用于读取连接到微控制器第29引脚的模拟信号。

conversion_factor = 3.3 / (4096-1)

计算转换因子,用于将ADC读数(范围0-4095)转换为电压值。树莓派Pico使用3.3V供电,所以转换因子是3.3V除以ADC的最大值减去1(即4095)。

 

reading = sensor_temp.read_u16() * conversion_factor

读取ADC的16位无符号整数(read_u16()),并将读数乘以前面定义的转换因子,得到电压值。

 

temperature = reading

将电压值赋给了temperature变量。

 

print(temperature)

打印该值。

 

utime.sleep(2)

这会从utime库调用sleep函数,2s后再次进入循环。

四、实验现象

程序下载完成之后,我们可以看到shell窗口每隔2秒打印一次温度值。

image-20240909162629701